package api

import (
	"fmt"
	"github.com/Ming0706/gorm/internal"
	_ "github.com/go-sql-driver/mysql"
	"github.com/jinzhu/gorm"
)

// InitGormDB 函数用于Gorm初始化建立数据库连接
func InitGormDB() (err error) {
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=%s&loc=%s",
		internal.UserName, internal.Password, internal.IpAddress, internal.Port, internal.DBName, internal.Charset, internal.ParseTime, internal.Loc)
	internal.DB, err = gorm.Open("mysql", dsn)
	if err != nil {
		fmt.Printf("连接数据库异常！\nError: %v\n", err)
		return
	}
	// 设置最大的空闲连接数
	internal.DB.DB().SetConnMaxLifetime(10)
	// 设置最大连接数
	internal.DB.DB().SetMaxOpenConns(100)
	// 自动生成数据库表，生成的表默认是struct名称的复数形式。如：user -> users
	// 如果想要不是复数形式，需设定：
	internal.DB.SingularTable(true)
	//defer db.Close()
	fmt.Printf("数据库连接成功！\n")
	return nil
}
